package com.aimao.blog.service;

import com.aimao.blog.constant.ServerResponse;
import com.aimao.blog.pojo.Article;
import com.aimao.blog.vo.ArticleAndCommentCountVo;
import com.aimao.blog.vo.ArticleAndTagSortVo;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * @Author PuaChen
 * @Create 2018-07-02 16:40
 */
public interface ArticleAdminService {

    /**
     * 发布一片文章
     *
     * @param article
     * @return
     */
    ServerResponse<Article> pushArticle(Article article);

    /**
     * 更新一片文章
     *
     * @param article
     * @return
     */
    ServerResponse<Article> updateArticle(Article article);

    /**
     * 删除文章 通过id 集合
     *
     * @param ids
     * @return
     */
    ServerResponse deleteArticle(List<Integer> ids);

    /**
     * 查询文章 正常的文章
     *
     * @param isSplit
     * @param page
     * @param size
     * @return
     */
    ServerResponse<IPage<ArticleAndCommentCountVo>> findALl(boolean isSplit, Integer page, Integer size);


    /**
     * 查询文章 正常的文章 通过大类别ID来查询
     *
     * @param sortId
     * @param isSplit
     * @param page
     * @param size
     * @return
     */
    ServerResponse<IPage<ArticleAndCommentCountVo>> findAllBySortId(Integer sortId, boolean isSplit, Integer page, Integer size);


    /**
     * 通过id查询文章
     *
     * @param id
     * @return
     */
    ServerResponse<ArticleAndCommentCountVo> findToId(Integer id);


    /**
     * 模糊查询文章
     *
     * @param keyWord
     * @param isSplit
     * @param page
     * @param size
     * @return
     */
    ServerResponse<IPage<ArticleAndCommentCountVo>> findToLike(String keyWord, boolean isSplit, Integer page, Integer size);

    /**
     * 查询所有草稿箱中文章
     *
     * @param isSplit
     * @param page
     * @param size
     * @return
     */
    ServerResponse<IPage<Article>> findDraftToAll(boolean isSplit, Integer page, Integer size);


    /**
     * 查询所有的文章通过ID的集合
     *
     * @param ids
     * @param isSplit
     * @param page
     * @param size
     * @return
     */
    ServerResponse<IPage<ArticleAndCommentCountVo>> findToIdList(List<Integer> ids, boolean isSplit, Integer page, Integer size);


    /**
     * 取消所有的置顶
     *
     * @return
     */
    ServerResponse cancelTopAll();

    /**
     * 设置一个文章为置顶
     *
     * @param id
     * @return
     */
    ServerResponse setTop(Integer id);

    /**
     * 一键发布草稿为正式的文档
     *
     * @param ids
     * @return
     */
    ServerResponse pushDraftToNormal(List<Integer> ids);

    /**
     * 获取置顶的文章
     *
     * @return
     */
    ServerResponse<ArticleAndCommentCountVo> getArticleTop();

    /**
     * 获取front下 文章的详情展示数据
     *
     * @param id
     * @return
     */
    ServerResponse<ArticleAndTagSortVo> getArticleDetail(Integer id);

    /**
     * 更新文章的阅读量+1
     * @param id
     * @return
     */
    ServerResponse updateArticleReadCount(Integer id);

    /**
     * 取消所有的置顶
     * @return
     */
    ServerResponse updateCancelTopAll();
}
